package com.eian.boot.crypto.model;

import lombok.Builder;
import lombok.Data;

/**
 * 加密结果
 *
 * @author eian
 */
@Data
@Builder
public class CryptoResult {

    /**
     * 加密/解密后的数据
     */
    private String data;

    /**
     * 原始字节数组
     */
    private byte[] bytes;

    /**
     * 初始化向量（加密时生成）
     */
    private String iv;

    /**
     * 是否成功
     */
    @Builder.Default
    private boolean success = true;

    /**
     * 错误消息
     */
    private String errorMessage;

    /**
     * 密钥标识符（加密时如果存储会返回）
     */
    private String keyId;

    /**
     * 创建成功结果
     */
    public static CryptoResult success(String data) {
        return CryptoResult.builder()
                .data(data)
                .success(true)
                .build();
    }

    /**
     * 创建成功结果（带字节数组）
     */
    public static CryptoResult success(String data, byte[] bytes) {
        return CryptoResult.builder()
                .data(data)
                .bytes(bytes)
                .success(true)
                .build();
    }

    /**
     * 创建失败结果
     */
    public static CryptoResult failure(String errorMessage) {
        return CryptoResult.builder()
                .success(false)
                .errorMessage(errorMessage)
                .build();
    }
}

